import logging
from abc import ABC, abstractmethod
from typing import List

from constant.model import NovelsInfo

# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)


class AbstractCrawler(ABC):
    

    @abstractmethod
    async def start(self):
        pass

    @abstractmethod
    async def search(self): 
        pass


class AbstractStore(ABC):
    
    @abstractmethod
    async def store_novels(self, novels: List[NovelsInfo]):
        pass

    @abstractmethod
    async def store_novel(self):
        pass